package cn.vo;

import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;

/**
 *https://www.zhihu.com/question/39651928 PO BO VO DTO POJO DAO DO这些Java中的概念
 * http://stackoverflow.com/questions/1432764/any-tool-for-java-object-to-object-mapping VO PO等之间的转换
 * modelmapper的详细手册 http://modelmapper.org/user-manual/
 * 一般的情况下不使用，尽量让前端和保存的对象相一致，小的项目可快速的迭代和维护
 *
 * 使用场景：
 *  1 旧的Model对象你不能修改，但前端你又想更好的组织
 *  2 多种model对象的组合成前端的情况
 *  3 前端显示有更多的计算等字段：这个可以在Model或前端通过增加不持久话的属性或前端独立渲染render实现
 */
public class SearchVO {
    //前端传递来的对象的验证需要在VO中进行验证，如果可以直接映射到Model的那就在Model中验证
    @NotEmpty
    @Length(max=100)
    private String fullName;

    @NotNull
    @Min(0)
    @Max(120)
    private Integer age;

    public String getFullName() {
        return fullName;
    }

    public void setFullName(String fullName) {
        this.fullName = fullName;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
